package com.etime.shycourse.services.interfaces;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.etime.shycourse.dto.CourseAndCommentDto;
import com.etime.shycourse.dto.CoursecommentDto;
import com.etime.shycourse.pojo.Coursecomment;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author wb
 * @since 2022-03-02
 */

public interface CoursecommentServices {

    /**
     * wx &  支招模块
     * <p>
     * 插入评论
     * 1、 Courseid commentcontent			课程id  评论内容 ，不能为空
     * 2 、commenttype	Integer		提问：2 默认   提问 1--评论 2--提问
     *
     * @param coursecomment
     * @return Integer
     * 成功返回1 失败返回0
     */
    Integer insetCourseComment(Coursecomment coursecomment, String token);

    /**
     * <p>
     * 对已经插入评论 进行评价
     * 1、 Courseid commentcontent			课程id  评论内容 ，不能为空
     * 2 、commenttype	Integer		评论：1 默认    提问 1--评论 2--提问
     *
     * @param coursecomment
     * @return Integer
     * 成功返回1 失败返回0
     */
    Integer insetCourseComments(Coursecomment coursecomment, String token);

    /**
     * 后台
     * <p>
     * 对已经插入评论 进行评价
     * 1、 Courseid commentcontent			课程id  评论内容 ，不能为空
     * 2 、commenttype	Integer	评论：1 默认   提问 1--评论 2--提问
     *
     * @param coursecomment
     * @return Integer
     * 成功返回1 失败返回0
     */
    Integer insetSysCourseComment(Coursecomment coursecomment, String token);

    /**
     * wx & 支招模块
     * <p>
     * 根据课程id 查询 评论
     *
     * @param CourseID
     * @return List<Coursecomment>
     **/
    List<Coursecomment> selectCommentList(Integer CourseID);

    /**
     * wx & 支招模块
     * <p>
     * 根据评论d 查询评论或提问的评论
     *
     * @param CommentID
     * @return List<Coursecomment>
     **/
    List<Coursecomment> selectCommentListById(Integer CommentID);

    /**
     * 根据评论id查询回复
     * 评论，后台管理模块
     * <p>
     * 根据评论id 查询评论或提问的评论
     *
     * @param commentId
     * @return List<Coursecomment>
     **/
    @Deprecated
    Page<Coursecomment> selectSysCommentByID(Integer commentId, Long pagenum, Long pagesize);

    /**
     * 根据评论id查询回复
     * 评论，后台管理模块
     * <p>
     * 根据评论id 查询评论或提问的评论
     *
     * @param commentId
     * @return List<Coursecomment>
     **/
    List<Coursecomment> selectSysCommentByID(Integer commentId);

    /**
     * 评论，提问 后台管理模块
     * <p>
     * 根据课程id 查询 评论和提问
     *
     * @param coursecomment
     * @return List<Coursecomment>
     **/
    List<Coursecomment> selectSysCommentList(Coursecomment coursecomment);

    /**
     * 评论，提问 后台管理模块 分页
     * <p>
     * 根据课程id 查询 评论和提问
     *
     * @param coursecomment
     * @return Page<Coursecomment>
     **/
    Page<Coursecomment> selectSysCommentPage(Coursecomment coursecomment, Long pagenum, Long pagesize);

    /**
     * 课程评论管理 大类的
     * 评论，提问 后台管理模块 分页
     * <p>
     * 根据课程id 查询 评论和提问
     *
     * @param coursecomment
     * @return Page<Coursecomment>
     **/
    Page<CoursecommentDto> selectSysCommentPages(CoursecommentDto coursecomment, Long pagenum, Long pagesize);


    /**
     * 我的提问 用户
     * <p>
     * 根据用户的id 查询 我的提问列表
     *
     * @param token
     * @return List<CoursecommentDto>
     **/
    List<CoursecommentDto> selectMyQuestionsCommentList(String token);

    /**
     * 我的评论 用户
     * <p>
     * 根据用户的id 查询 我的提问列表
     *
     * @param token
     * @return List<CoursecommentDto>
     **/
    List<CoursecommentDto> selectMyCommentList(String token);

    /**
     * 统计评论条数
     * 根据课程id
     *
     * @param CourseId
     * @return Int
     */
    Integer countComment(Integer CourseId);

    /**
     * 统计提问条数
     * 根据课程id
     *
     * @param CourseId
     * @return Int
     */
    Integer countQuestions(Integer CourseId);

    /**
     * 后台管理模块
     * <p>
     * updateCommentById
     * 据课程评论的id 进行修改 评论的置顶，加精
     *
     * @param coursecomment
     * @return int
     */
    Integer updateCommentById(Coursecomment coursecomment);

    /**
     * 后台 管理课程 /----修改
     * 统计评论的条数 ，数据
     *
     * @param CourseId 课程id
     * @return CourseAndCommentDto
     */
    CourseAndCommentDto selectCourseAndCommentDtoByIds(Integer CourseId);
}

